This invention relates to a virtual machine system, and more particularly, to a technology, which is used in a virtual machine system where a plurality of virtual machines are run on a physical computer while sharing an I/O device, of keeping the physical computer from shutting down.
Physical computers are used widely in the forms of commercial servers and personal computers (PCs). A problem of conventional physical computers is that one OS at most can be run on one physical computer. To address this problem, a virtual machine monitor (VMM) technology has been developed in which a plurality of virtual machines and a hypervisor for managing the plurality of virtual machines are run on one physical computer as disclosed in U.S. Pat. No. 6,496,847. For instance, with the technology of U.S. Pat. No. 6,496,847, a plurality of OSs can be simultaneously run on a single computer by running separate OSs on a plurality of virtual machines.
The technology disclosed in U.S. Pat. No. 6,496,847 enables a plurality of virtual machines to share a single IO device on a physical computer so that each virtual machine can use an input/output (IO) device. The sharing is accomplished by virtualizing the IO device with a VMM and allocating the resultant virtual IO devices to the respective virtual machines while switching the allocation in a time-sharing manner. However, this IO device sharing involves a large overhead and has resulted in the practice of overhead reduction that has begun around the year 2009 and that uses Single Root I/O Virtualization (SR-IOV), which is a standardized technology disclosed in Single Root I/O Virtualization and Sharing Specification Revision 1.0. According to Single Root I/O Virtualization and Sharing Specification Revision 1.0, which is the specification of SR-IOV, a device compliant with SR-IOV has Physical Functions (PFs) and Virtual Functions (VFs), which are expansions of functions installed in a conventional IO device. PFs include a function capable of controlling the overall initialization of the IO device, the generation of a VF, and the like. VFs, on the other hand, provide an input/output function that is provided by a conventional I/O device.